From 1e47b1c6100d112ddd5e17348256b004d04a6ad7 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 9 Nov 2021 17:49:40 +0100 Subject: [PATCH] label: Handle width-chars > text width This was broken in wrapping labels. Testcase included. --- gtk/gtklabel.c | 1 + testsuite/reftests/label-wrap-width-chars.ref.ui | 12 ++++++++++++ testsuite/reftests/label-wrap-width-chars.ui | 13 +++++++++++++ testsuite/reftests/meson.build | 2 ++ 4 files changed, 28 insertions(+) create mode 100644 testsuite/reftests/label-wrap-width-chars.ref.ui create mode 100644 testsuite/reftests/label-wrap-width-chars.ui diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c index a82ec7bb77..4d84d6fc8d 100644 --- a/gtk/gtklabel.c +++ b/gtk/gtklabel.c @@ -1174,6 +1174,7 @@ get_width_for_height (GtkLabel *self, /* Minimum width is as many line breaks as possible */ layout = gtk_label_get_measuring_layout (self, NULL, MAX (minimum_default, 0)); pango_layout_get_size (layout, minimum_width, NULL); + *minimum_width = MAX (*minimum_width, minimum_default); /* Natural width is natural width - or as wide as possible */ layout = gtk_label_get_measuring_layout (self, layout, natural_default); diff --git a/testsuite/reftests/label-wrap-width-chars.ref.ui b/testsuite/reftests/label-wrap-width-chars.ref.ui new file mode 100644 index 0000000000..0fea15162b --- /dev/null +++ b/testsuite/reftests/label-wrap-width-chars.ref.ui @@ -0,0 +1,12 @@ + + + + 0 + + + Hello World + 20 + + + + diff --git a/testsuite/reftests/label-wrap-width-chars.ui b/testsuite/reftests/label-wrap-width-chars.ui new file mode 100644 index 0000000000..9c875e6601 --- /dev/null +++ b/testsuite/reftests/label-wrap-width-chars.ui @@ -0,0 +1,13 @@ + + + + 0 + + + Hello World + 1 + 20 + + + + diff --git a/testsuite/reftests/meson.build b/testsuite/reftests/meson.build index 83a06c9c80..8ef810ae7d 100644 --- a/testsuite/reftests/meson.build +++ b/testsuite/reftests/meson.build @@ -369,6 +369,8 @@ testdata = [ 'label-text-shadow-changes-modify-clip.ui', 'label-width-chars-dont-shrink.ref.ui', 'label-width-chars-dont-shrink.ui', + 'label-wrap-width-chars.ref.ui', + 'label-wrap-width-chars.ui', 'label-wrapped-huge-max-width-chars.ref.ui', 'label-wrapped-huge-max-width-chars.ui', # this seems to make assumptions on text positioning -- 2.30.2